Low complexity technique for detecting data in a received multiple-input-multiple-output (MIMO) signal

ABSTRACT

Systems and methods for detecting data in a received multiple-input-multiple-output signal are provided. First, second, and third signals are received and form a vector y. The received signals are associated with first, second, and third data values that form a vector x. A channel matrix (H) is received, and a QR decomposition of the channel matrix is performed, such that H=QR. The vector y is transformed into a vector z according to z=Q H y. A distance value between the rector z and the vector x is determined for each possible third data value. A nearest constellation point is calculated based on a first of the possible third data values. The calculating step is repeated for each of the possible third data values to generate a set of constellation point triplets. The distance values are determined using the set of constellation point triplets.

CROSS-REFERENCE TO RELATED APPLICATIONS

This disclosure claims priority to U.S. Provisional Patent Application No. 61/717,931, filed on Oct. 24, 2012, the entirety of which is incorporated herein by reference.

TECHNICAL FIELD

The technology described in this document relates generally to signal receivers and more particularly to a low complexity computation technique used for detecting data in a received multiple-input-multiple-output (MIMO) signal.

BACKGROUND

In the field of wireless communications, MIMO-OFDM (Multiple-Input and Multiple-Output, Orthogonal Frequency-Division Multiplexing) technology has been used to achieve increased data throughput and link range without requiring additional bandwidth or increased transmission power. MIMO-OFDM technology utilizes multiple transmission antennas at a transmitter and multiple receiving antennas at a receiver to enable a multipath rich environment with multiple orthogonal channels existing between the transmitter and the receiver. Data signals are transmitted in parallel over these channels, and as a result, both data throughput and link range are increased. Due to these advantages, MIMO-OFDM has been adopted in various wireless communication standards, such as IEEE 802.11n/11ac, 4G, 3GPP Long Term Evolution (LTE), WiMAX, and HSPA+.

SUMMARY

The present disclosure is directed to systems and methods for detecting data in a received multiple-input-multiple-output (MIMO) signal. In general, in one aspect, this specification discloses a method of detecting data in a received MIMO signal, where a first signal (y1), a second signal (y2), and a third signal (y3) are received, via a transmission channel, on first, second, and third spatial streams, respectively. The received signals are associated with first data values (x1), second data values (x2), and third data values (x3). The first signal, the second signal, and the third signal are formed into a received signal vector y. The first data values, the second data values, and the third data values are formed into a vector x. A channel matrix (H) representing effects of the transmission channel on the first data values, the second data values, and the third data values is received. A QR decomposition of the channel matrix is performed, such that H=QR, where Q matrix is a unitary matrix and R matrix is an upper triangular matrix. The received signal vector y is transformed into a rotated received signal vector z according to z=Q^(H)y. A distance value between the vector z and the vector x is determined for each possible third data value (x3). To determine the distance value, a nearest constellation point is calculated based on a first of the possible third data values (x3), where the nearest constellation point minimizes a distance between vector z and vector x. The calculating step is repeated for each of the possible third data values (x3) to generate a set of constellation point triplets. One constellation point triplet is associated with each of the possible third data values (x3). A distance value between the vector z and the vector x is determined using the set of constellation point triplets, and further using elements of the channel matrix, where one distance value is associated with each of the constellation point triplets of the set. One or more log likelihood ratio (LLR) values are determined based on the determined distance values.

In general, in another aspect, this specification discloses a method for detecting data in a received multiple-input-multiple-output (MIMO) signal, where a first signal (y₁), a second signal (y₂), and a third signal (y₃) are received, via a transmission channel, on first, second, and third spatial streams, respectively. The received signals are associated with first data values (x₁), second data values (x₂), and third data values (x₃). The first, second, and third signals form a y-vector ([y₁, y₂, y₃]^(T)), the first, second, and third data values form an x-vector ([x₁, x₂, x₃]^(T)). A channel matrix (H) representing effects of the transmission channel on the one or more first data values, the one or more second data values, and the one or more third data values is received. A QR decomposition of the channel matrix is performed, such that H=QR, where Q matrix is a unitary matrix and R matrix is

$\begin{bmatrix} r_{11} & r_{12} & r_{13} \\ 0 & r_{22} & r_{23} \\ 0 & 0 & r_{33} \end{bmatrix}.$ The y-vector is transformed to a z-vector ([z₁, z₂, z₃]^(T)) according to z=Q^(H)y. A distance value between the z-vector and the x-vector is determined for each possible third data value (x₃). The determining includes calculating a particular second data value (x₂) that minimizes a term |z₂−r₂₂x₂−r₂₃x₃|² for a first of the possible third data values (x₃). The determining also includes calculating a particular first data value (x₁) that minimizes a term |z₁−r₁₁x₁−r₁₂x₂−r₁₃x₃|² for the first of the possible third data values (x₃) and the particular second data value (x₂). A distance value between the z-vector and the x-vector is calculated for the first of the possible third data values (x₃) using the particular second data value (x₂) and the particular first data value (x₁). The calculating steps are repeated for each of the possible third data values (x₃) so that one distance value is associated with each possible third data value (x₃). One or more log likelihood ratio (LLR) values are determined based on the determined distance values. The third data value (x₃) is decoded based on the one or more LLR values.

In general, in another aspect, this specification discloses a system for detecting data in a received multiple-input-multiple-output (MIMO) signal that includes one or more antennas configured to receive, via a transmission channel, a first signal (y1), a second signal (y2), and a third signal (y3) on first, second, and third spatial streams, respectively. The received signals are associated with first data values (x1), second data values (x2), and third data values (x3). The first signal, the second signal, and the third signal form a received signal vector y, and the first data values, the second data values, and the third data values form a vector x. The system also includes a QR decomposer configured to transform a channel matrix (H) representing effects of the transmission channel on the first data values, the second data values, and the third data values. The channel matrix is transformed via a QR decomposition, such that H=QR, where Q matrix is a unitary matrix and R matrix is an upper triangular matrix. A matrix transformer is configured to transform the received signal vector y into a rotated received signal vector z according to z=Q^(H)y. The system further includes a distance value determiner configured to determine a distance value between the vector z and the vector x for each possible third data value (x3). To determine the distance value, a nearest constellation point is calculated based on a first of the possible third data values (x3), where the nearest constellation point minimizes a distance between vector z and vector x. The calculating step is repeated for each of the possible third data values (x3) to generate a set of constellation point triplets. One constellation point triplet is associated with each of the possible third data values (x3). A distance value between the vector z and the vector x is determined using the set of constellation point triplets, and further using elements of the channel matrix, where one distance value is associated with each of the constellation point triplets of the set.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a block diagram of an example multiple-input-multiple-output (MIMO) communication system including a MIMO transmitter, MIMO receiver, and channel.

FIG. 2 is a block diagram illustrating internal components of an example matrix decoder for use in a maximum-likelihood receiver, where the example matrix decoder implements a maximum-likelihood algorithm for determining log-likelihood ratio (“LLR”) values for three spatial streams.

FIG. 3 is a block diagram illustrating an example implementation of a low complexity algorithm for computing LLR values for the bits in the transmitted signal x₃.

FIG. 4 is a flowchart illustrating an example method for detecting data in a received multiple-input-multiple-output (MIMO) signal using the low complexity algorithm disclosed above with reference to FIGS. 1-3.

FIG. 5 depicts an example device illustrating an implementation of the present disclosure.

DETAILED DESCRIPTION

FIG. 1 is a block diagram 100 of an example multiple-input-multiple-output (MIMO) communication system including a MIMO transmitter 102, MIMO receiver 110, and channel 106. The MIMO communication system allows more than one spatial stream to be transmitted, and in the example of FIG. 1, three spatial streams are used. In the MIMO transmitter 102, data to be transmitted is provided as a stream of 1's and 0's to an encoder. The encoder encodes the data to be transmitted with, for example, an error correcting code. The output of the encoder is provided to a spatial stream splitter and divided into three spatial streams. These spatial streams are then propagated to a frequency modulator and frequency modulated into symbols, which may be represented as a sequence of complex numbers. The frequency modulated signals are then sent through three antennas 104 and transmitted through the transmission channel 106. The transmission channel 106 may include, for example, air. The three antennas 104 correspond to the three spatial streams to be transmitted. In other examples, fewer than three antennas are used, or more than three antennas are used.

In the example illustrated in FIG. 1, using three antennas 108, the MIMO receiver 110 receives the three spatial stream signals from the transmission channel 106. In the MIMO receiver 110, the received spatial streams are processed by front end and time domain processing blocks 112 (e.g., analog-to-digital conversion blocks, digital to analog-conversion blocks, etc.). The output of the front end and time domain processing blocks 112 is provided to a fast Fourier Transform (HT) module 114 and converted from a time domain representation to a frequency domain representation. The converted spatial streams are then propagated to a MIMO equalizer 116. The MIMO equalizer 116 then calculates log-likelihood ratio (LLR) values 118 for each of the received spatial streams. The MIMO equalizer 116 operates in the frequency domain and is configured to remove the channel effects on the received spatial streams. The calculated LLR values 118 are combined by a LLR combiner and provided to a decoder 120. The decoder 120 may be, for example, a low-density parity-check (LDPC) decoder or a convolutional decoder. The decoder 120 decodes the received spatial streams using the LLR values provided by the combiner and generates informational bits output data 122.

Specifically, the MIMO equalizer 116 may be a maximum-likelihood equalizer 124 that utilizes a matrix decoder 126 to perform distance and LLR calculations. As described below, the matrix decoder 126 generates approximate maximum-likelihood solutions using an algorithm that has a low computational complexity. The matrix decoder 126 offers substantially identical error performance as compared to techniques having higher complexity (e.g., an exhaustive, brute force search methodology). As described in further detail below, the algorithms used by the matrix decoder 126 have a lower complexity as compared to exhaustive search or brute force algorithms, potentially offering large savings in required hardware and computation time as well as higher throughput. The algorithms used by the matrix decoder 126 balance complexity and performance and may result in a performance improvement in a rate-versus-range metric when using three spatial streams. Using the maximum-likelihood approximations described herein, it may be possible to sustain higher throughputs fir longer distances as compared to conventional solutions.

The matrix decoder 126 receives, via the three antennas 108, a first signal, a second signal, and a third signal transmitted through the channel 106. The matrix decoder 126 utilizes a low complexity algorithm and computes LLR values based on the received signals. Specifically, the received first, second, and third signals may be represented by the equation y=Hx+n, where y represents the received signals at the MIMO receiver 110, x represents the data values of the symbols in the spatial streams transmitted by the MIMO transmitter 102, H is a channel matrix representing combined effects of the transmission channel 106 and spatial mapping of the MIMO transmitter 102 on the transmitted signal, and n represents noise. In the three spatial stream case, y is a 3×1 vector ([y₁,y₂,y₃]^(T)), x is a 3×1 vector ([x₁,x₂,x₃]^(T)), H is a 3×3 vector

$\begin{bmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \end{bmatrix},$ and n is a 3×1 vector ([n₁, n₂, n₃]^(T)). Thus, a 3×3 MIMO system with the three spatial streams may be described by the following equation:

${\underset{\underset{y}{︸}}{\begin{bmatrix} y_{1} \\ y_{2} \\ y_{3} \end{bmatrix}} = {{\underset{\underset{H}{︸}}{\begin{bmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \end{bmatrix}}\underset{\underset{x}{︸}}{\begin{bmatrix} x_{1} \\ x_{2} \\ x_{3} \end{bmatrix}}} + {\underset{\underset{n}{︸}}{\begin{bmatrix} n_{1} \\ n_{2} \\ n_{3} \end{bmatrix}}.}}}$ Assuming an additive white Gaussian noise (AWGN) model and perfect channel estimation, a maximum likelihood equalizer seeks optimal estimates of symbols x₁, x₂, and x₃ so as to minimize a Euclidian distance:

${{y - {Hx}}}^{2} = {\sum\limits_{i = 1}^{3}{{{y_{i} - {h_{i\; 1}x_{1}} - {h_{i\; 2}x_{2}} - {h_{i\; 3}x_{3}}}}^{2}.}}$

An exact maximum likelihood solution corresponds to the triplet of symbols (x₁, x₂, x₃) that minimizes the Euclidean distance above by performing an exhaustive, brute-force search of the 3-dimensional space. For higher-order constellations, such as 64-QAM or 256-QAM, this involves a search over 64³ or 256³ symbols in parallel for each tone. This leads to prohibitive complexity, as in addition, there could be as many as 256 tones (or OFDM subcarriers) for 802.11ac that need to be processed simultaneously.

As described above, the MIMO equalizer 116 of FIG. 1 utilizes the matrix decoder 126 to perform distance and LLR calculations using a maximum likelihood approximation procedure. The maximum likelihood approximation procedure may offer substantially identical error performance as compared to the above-described exhaustive, brute-force search methodology, while being of a lower complexity. The lower complexity maximum likelihood approximation approach is described in further detail below with reference to FIGS. 2-5.

FIG. 2 is a block diagram 160 illustrating internal components of an example matrix decoder 162 for use in a maximum-likelihood receiver, where the example matrix decoder implements a maximum-likelihood algorithm for determining log-likelihood ratio (“LLR”) values for three spatial streams. Prior to receiving data signals over the one or more antennas 163, matrix calculations are done with respect to the known channel matrix H 164. As illustrated at 166, a QR decomposition of the H matrix 164 may be performed such that H=QR. The Q matrix is a unitary matrix, and the R matrix may be an upper triangular matrix represented as R=

$\begin{bmatrix} r_{11} & r_{12} & r_{13} \\ 0 & r_{22} & r_{23} \\ 0 & 0 & r_{33} \end{bmatrix}.$ A similar QR decomposition procedure is performed at 170, 196 using a permutated channel matrix, as described in greater detail below. At 168 and 194, the channel matrix H 164 is multiplied by a permutation matrix. In the current example including three spatial streams, the permutation matrices used at 168 and 194 may be, for example,

${P = {{\begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \end{bmatrix}\mspace{14mu}{or}\mspace{14mu} P} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \end{bmatrix}}},$ such that the columns of the channel matrix H are swapped when multiplied by the permutation matrix. In a modified version of the block diagram 160 of FIG. 2, rather than swapping columns of the H matrix 164, columns of the R matrix may be swapped.

The matrix decoder 162 executes over three paths 172, 174, 192 that may operate in series or in parallel. The first path 172 calculates LLR values 176 for data value associated with a third received signal, the second path 174 calculates LLR values 1178 for data value associated with a second received signal, and the third path 192 calculates LLR values 204 for data value associated with a first received signal. These LLR values 176, 178, 204 may be combined and decoded as described above with reference to FIG. 1.

The first path 172 begins at a matrix transformer 180. In the three spatial stream case, the matrix transformer 180 receives the first, second, and third signals as a 3×1 vector ([y₁, y₂, y₃]^(T)). The matrix transformer 180 transforms the y vector according to the relationship z=Q^(H)y, resulting in a 3×1 z vector ([z₁, z₂, z₃]^(T)). Specifically, in the matrix transformer 180, the relationship y=Hx+n may be multiplied by Q^(H) to obtain z=Q^(H)y=Rx+Q^(H)n, which is expanded to

$\begin{bmatrix} z_{1} \\ z_{2} \\ z_{3} \end{bmatrix} = {{\begin{bmatrix} r_{11} & r_{12} & r_{13} \\ 0 & r_{22} & r_{23} \\ 0 & 0 & r_{33} \end{bmatrix}\begin{bmatrix} x_{1} \\ x_{2} \\ x_{3} \end{bmatrix}} + {\begin{bmatrix} n_{1} \\ n_{2} \\ n_{3} \end{bmatrix}.}}$ In the three spatial stream system, each data symbol transmitted, x_(i) (where i=1 corresponds to data transmitted on a first spatial stream, i=2 corresponds to data transmitted on a second spatial stream, and i=3 corresponds to data transmitted on a third spatial stream) maps to n bits {b₁ ^((i)), b₂ ^((i)), . . . , b_(n) ^((i))}. M=2^(n) is the alphabet size of the underlying modulation, such as binary phase shift keying (BPSK), quadrature amplitude modulation (QAM), etc.

Following the z transformation at 180, a minimum distance value is calculated at 182 for each of the M possible values of x₃. In a system using n=6 bits, the alphabet size M is equal to 64. In the three spatial stream system having the alphabet size of M, x₁ will have M possible values, x₂ will have M possible values, and x₃ will have M possible values, resulting in M³ constellation points. The minimum distance calculated at 182 is calculated according to a formula:

$\begin{matrix} \begin{matrix} {{{z - {Rx}}}^{2} = {{{z_{1} - {r_{11}x_{1}} - {r_{12}x_{2}} - {r_{13}x_{3}}}}^{2} +}} \\ {{{z_{2} - {r_{22}x_{2}} - {r_{23}x_{3}}}}^{2} + {{z_{3} - {r_{33}x_{3}}}}^{2}} \\ {= {T_{1} + T_{2} + T_{3}}} \end{matrix} & \left( {{Equation}\mspace{14mu} 1} \right) \end{matrix}$ for each possible x₃ value. Specific x₁ and x₂ values that minimize the distance T₁+T₂+T₃ are determined for each possible x₃ value. It should be noted that the QR decomposition and z transformation procedure are of low computational complexities and do not change the statistical properties of the system. Thus, instead of minimizing the ∥y−Hx∥² distance value, the less complex ∥z−Rx∥² distance value can be minimized according to a sequential, “term-by-term” process described below. The term-by-term process is an algorithm that considers approximate versions of all three terms T₁, T₂, and T₃ and attempts to minimize the sum T₁+T₂+T₃ with tow computational complexity. The result is an approximate maximum likelihood solution that offers similar performance as compared to an exact maximum likelihood algorithm, while offering the lower computation complexity.

In determining the x₁ and x₂ values that minimize the distance T₁+T₂+T₃ for each possible x₃ value, a sequential, term-by-term process is employed. The term-by-term process for minimizing the distance is used instead of a process that attempts to minimize an entirety of the T₁+T₂+T₃ equation. In the term-by-term process, a first x₃ value is selected. For the first selected x₃ value, an x₂ value is calculated that minimizes the T₂ term of Equation 1. In other words, an x₂ value that minimizes the term |z₂−r₂₂x₂−r₂₃x₃|² is calculated for the first selected x₃ value. The T₂ term can be isolated and minimized in this manner because it is a function of only x₂ and x₃, where x₃ has been fixed to the first selected x₃ value. The x₂ value that minimizes the T₂ term may be determined via a slicing procedure, as described below.

Next, for the first selected x₃ value and the sliced x₂ value, an x₁ value is calculated that minimizes the T₁ term of Equation 1. In other words, an x₁ value that minimizes the term |z₁−r₁₁x₁−r₁₂x₂−r₁₃x₃|² is calculated for the first selected x₃ value and the sliced x₂ value. The T₁ term can be isolated and minimized in this manner because it is a function of x₁, x₂, and x₃, where x₃ is fixed and x₂ is the sliced x₂ value previously determined. The x₁ value that minimizes the T₁ term may be determined via a slicing procedure. In one example of the slicing procedures used to determine the x₂ and x₁ values that minimize the T₂ and T₁ terms, respectively, a coordinate value F is calculated, where F is a complex number. Following calculation of F, the distance calculator 182 quantizes F to a nearest constellation point. The nearest constellation point may be used to select the x₂ value that minimizes the T₂ term and the x₁ value that minimizes the T₁ term.

The term-by-term process for minimizing the distance T₁+T₂+T₃ is repeated for possible x₃ values. In the system using n=6 bits, the alphabet size M is equal to 64, such that there are 64 possible x₃ values. Thus, in such a system with n=6 bits, the minimal distance for T₁+T₂+T₃ is repeated 64 times for each of the possible x₃ values. For each iteration, x₂ and x₁ values that minimize the T₂ and T₁ terms, respectively, calculated, ultimately resulting in the calculation of M T₁+T₂+T₃ distance values. When distance values for all possible values of x₃ are calculated, LLR values are calculated at 184 for the data associated with the third spatial stream, x₃. The calculated LLR values are output as shown at 176. The LLR value for a bit b_(k) ^((i)) given a received vector y and a known channel matrix H may be represented as:

${{L\left( b_{k}^{(i)} \right)} = {{\log\;\frac{P\left( {b_{k}^{(i)} = 1} \right)}{P\left( {b_{k}^{(i)} = 0} \right)}} = {\log\left\{ {\left( {\sum\limits_{x \in x_{k,i}}{\mathbb{e}}^{{{- {{y - {Hx}}}^{2}}/2}\sigma^{2}}} \right)/\left( {\sum\limits_{x \in {\overset{\_}{x}}_{k,i}}{\mathbb{e}}^{{{- {{y - {Hx}}}^{2}}/2}\sigma^{2}}} \right)} \right\}}}},$ where x_(k,i) is the set of all possible x vectors with b_(k) ^((i))=1, and x _(k,i) is the set of all possible x vectors with b_(k) ^((i))=0. The following simplification, called the Max-Log Approximation, may also be utilized to calculate the LLR value for a bit b_(k) ^((i)):

${L\left( b_{k}^{(i)} \right)} \approx {{\min\limits_{x \in {\overset{\_}{x}}_{k,i}}{{y - {Hx}}}^{2}} - {\min\limits_{x \in x_{k,i}}{{{y - {Hx}}}^{2}.}}}$

A similar process is followed along the second and third paths 174, 192 to calculate LLR values for data associated with the second spatial stream (x₂) and the e first spatial stream (x₁), respectively. At 168, the channel matrix H 164 is permutated to swap the second and third columns of the channel matrix H 164 prior to QR decomposition. Swapping the columns of H in this manner causes the value x₂ to be pushed down to the bottom of the x vector ([x₁ x₂ x₃]^(T)). Similarly, at 194, the channel matrix H 164 is permutated to swap the first and third columns of the channel matrix rix H 164 prior to QR decomposition. Swapping the columns of H in this manner causes the value x₁ to be pushed down to the bottom of the x vector ([x₁ x₂ x₃]^(T)). Following permutation of the channel matrix H 164 at 168 and 194, QR decompositions are performed at 170 and 196 on the permutated channel matrices.

The second path 174 begins at a second matrix transformer 186. In the three spatial stream case, the matrix transformer 186 receives the first, second, and third spatial stream signals as a 3×1 vector ([y₁, y₂, y₃]^(T)). The second matrix transformer 186 transforms the received y vector according to the relationship z=Q^(H)y, resulting in a 3×1 z vector ([z₁, z₂, z₃]^(T)). Following the z transformation at 186, a minimum distance value is calculated at 188 for each of the M possible values of x₂ in a similar manner as was described with respect to x₃ at 182. The minimum distance value calculated at 188 is calculated according to the formula:

$\begin{matrix} \begin{matrix} {{{z - {Rx}}}^{2} = {{{z_{1} - {r_{11}x_{1}} - {r_{12}x_{3}} - {r_{13}x_{2}}}}^{2} +}} \\ {{{z_{2} - {r_{22}x_{3}} - {r_{23}x_{2}}}}^{2} + {{z_{3} - {r_{33}x_{2}}}}^{2}} \\ {= {T_{1} + T_{2} + {T_{3}.}}} \end{matrix} & \left( {{Equation}\mspace{14mu} 2} \right) \end{matrix}$

The term-by-term process for minimizing the distance T₁+T₂+T₃ of Equation 2 is utilized, and a first x₂ value is selected. For the first selected x₂ value, x₃ and x₁ values that minimize the T₂ and T₁ terms, respectively, are calculated, where the x₃ and x₁ values are calculated in the sequential, term-by-term process described above. The x₃ and x₁ values that minimize the T₂ and T₁ terms may be determined via a slicing procedure. The term-by-term process for minimizing the distance T₁+T₂+T₃ is repeated for all possible x₂ values, thus producing M T₁+T₂+T₃ distance values. When distance values for all possible values of x₂ are calculated, LLR values are calculated at 190 for the data associated with the second spatial stream, x₂. The calculated LLR values are output as shown at 178.

The third path 192 begins at a third matrix transformer 198. In the three spatial stream case, the matrix transformer 198 receives the first, second, and third spatial stream signals as a 3×1 vector ([y₁, y₂, y₃]^(T)). The third matrix transformer 198 transforms the received y vector according to the relationship z=Q^(H)y, resulting in a 3×1 z vector ([z₁, z₂, z₃]^(T)). Following the z transformation at 198, a minimum distance value is calculated at 200 for each of the M possible values of x₁ in a similar manner as was described with respect to x₃ and x₂. The minimum distance value calculated at 200 is calculated according to the formula:

$\begin{matrix} \begin{matrix} {{{z - {Rx}}}^{2} = {{{z_{1} - {r_{11}x_{2}} - {r_{12}x_{3}} - {r_{13}x_{1}}}}^{2} +}} \\ {{{z_{2} - {r_{22}x_{3}} - {r_{23}x_{1}}}}^{2} + {{z_{3} - {r_{33}x_{1}}}}^{2}} \\ {= {T_{1} + T_{2} + {T_{3}.}}} \end{matrix} & \left( {{Equation}\mspace{14mu} 3} \right) \end{matrix}$

The term-by-term process for minimizing the distance T₁+T₂+T₃ of Equation 3 is utilized, and a first x₁ value is selected. For the first selected x₁ value, x₂ and x₃ values that minimize the T₁ and T₂, terms, respectively, are calculated, where the x₂ and x₃ values are calculated in the sequential, term-by-term process described above. The x₂ and x₃ values that minimize the T₁ and T₂ terms may be determined via a slicing procedure. The term-by-term process for minimizing the distance T₁+T₂+T₃ is repeated for all possible x₁ values, thus producing M T₁+T₂+T₃ distance values. When distance values for all possible values of x₁ are calculated, LLR values are calculated at 202 for the data associated with the first spatial stream, x₁. The calculated LLR values are output as shown at 204. The calculated LLR values 176, 178, 204 for the x₃, x₂, and x₁ spatial streams are passed to a decoder as soft information.

Certain approximations for metric computation may be used in the example of FIG. 2. For example, for fixed point hardware implementations, the distance approximations for the terms T₁, T₂, and T₃ may compute and store norm values instead of norm-square values. As an example, |z₃−r₃₃x₃| may be computed instead of |z₃−r₃₃x₃|² for term T₃ of Equation 1. Further, various norm approximations may be used. For example, the 2-norm of complex number a+ib is approximated as

${{a + {ib}}} \cong {{\max\left\{ {{a},{b}} \right\}} + {\frac{5}{16}\min{\left\{ {{a},{b}} \right\}.}}}$

The term-by-term process and slicing procedure utilized in the matrix decoder 162 of FIG. 2 generates an approximate maximum likelihood solution without significant loss to performance, as compared to an exact maximum likelihood solution. The term-by-term process and slicing procedure has a lower complexity as compared to an exhaustive search or brute force methodology, potentially offering large savings in required hardware and computation time as well as higher throughput. The procedure balances complexity and performance and may result in a performance improvement in a rate-versus-range metric when using three spatial streams. Using the maximum likelihood approximation described above, it may be possible to sustain higher throughputs for longer distances as compared to conventional solutions, and the performance gain may be most significant in over-the-air (OTA) scenarios.

Although the maximum likelihood approximation is described in terms of an example using three spatial streams, the techniques described above can be extended to systems having a number of spatial streams that is greater than three and offer such systems improved performance. Further, the approximation may be used to reduce a number of receiving antennas on a device, such that the performance of a conventional system having four receiving antennas may be provided with three receiving antennas when utilizing the above-described approximations. Additionally, as described above, the system may be carried out in a parallel form for reduced latency.

Variations of the above-described procedures may be implemented. Such variants may modify the system of FIG. 2 to enable different balances between complexity and performance, for example. As an example, a “2ML” variant may utilize a T₂+T₃ distance equation, rather than the T₁+T₂+T₃ distance equation of Equations 1, 2, and 3, in the context of a MIMO system using three spatial streams. Using only terms T₂+T₃ may offer a lower computational complexity.

As another example, a “3ML_(—)2PT” variant may be used. In the 3ML_(—)2PT variant, for each possible value of x₃ in the constellation, the two nearest sliced x₂ points are stored and used to determine two nearest sliced x₁ points. For example, for a given x₃ value, a sliced x₂₁ value that minimizes the T₂ term may be used to determine a sliced x₁₁ value that attempts to minimize T₁, and a sliced x₂₂ value that minimizes the T₂ may be used to determine a sliced x₁₂ value that also attempts to minimize T₁. In this manner, the use of the multiple sliced x₂ points and the multiple sliced x₁ points may be used to better optimize the distance value T₁+T₂+T₃. With the two x₂ values and the two x₁ values, two sets of T₁+T₂+T₃ distance values are computed, and a lower of the two distance values can be used for further processing. The 3ML_(—)2PT variant requires storage of the two sets of T₁+T₂+T₃ distance values and requires additional computations to obtain the additional x2 and x₁ values.

As another example, a “3ML_(—)4PT” variant is an extension of the 3ML_(—)2PT variant. In the 3ML_(—)4PT variant, for each possible value of x₃ in the constellation, the four nearest sliced x₂ points are stored and used to determine four nearest sliced x₁ points. The use of the four sliced x₂ points and the four sliced x₁ points may be used to better optimize the distance value T₁+T₂+T₃. With the four x₂ values and the four x₁ values, four sets of T₁+T₂+T₃ distance values are computed, and a lowest of the four distance values can be used for further processing. The 3ML_(—)4PT variant requires storage of the four sets of T₁+T₂+T₃ values.

As yet another example, a “Mod_(—)3ML” variant may be used. In the Mod_(—)3ML variant, the procedures described above with reference to FIG. 2 may be performed twice. For example, in a first step, for each possible x₃ value in the constellation, slicing may be used to determine an optimal x₂ value, and then slicing may be used to determine an optimal x₁ value (i.e., as described above with reference to FIG. 2). In a second step, for each possible x₃ value in the constellation, slicing may be used to determine an optimal x₁ value, and then slicing may be used to determine an optimal x₂ value. The two steps produce two sets of T₁+T₂+T₃ distance values, and a minimum distance value may be selected and used in further processing.

FIG. 3 is a block diagram 300 illustrating an example implementation of a low complexity algorithm for computing LLR values for the bits in the transmitted signal x₃. In FIG. 3, block 1 includes the received signal y, represented as

$\frac{z\sqrt{N}}{r_{11}},$ where the value z results from the relationship z=Q^(H)y and r₁₁ is a value from an upper triangular matrix

${R = \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ 0 & r_{22} & r_{23} \\ 0 & 0 & r_{33} \end{bmatrix}},$ and where a QR decomposition of a channel matrix H is performed according to the relationship H=QR. The √{square root over (N)} value is a constellation-specific scaling factor. The received signal y of block 1 is received at a block 2 that is used to determine a T₃ value equal to

$\frac{z_{3}\sqrt{N}}{r_{11}} - {\frac{r_{33}}{r_{11}}{x_{3}.}}$ In determining the T₃ value in block 2, the x₃ value is fixed, as described above in FIG. 2. For example, the x value is initially fixed to a first possible value of x₃, and using the fixed first possible value of x₃, x₂ and x₁ values that minimize the T₂ and T₁ terms, respectively, of a T₁+T₂+T₃ distance equation are determined (e.g., a T₁+T₂+T₃ distance equation similar to Equation 1, above).

For the fixed x₃ value, a term

$\frac{z_{2}\sqrt{N}}{r_{22}} - {\frac{r_{23}}{r_{22}}x_{3}}$ of block 3 is sliced to determine the x₂ value that minimizes the T₂ term. The sliced x₂ value is stored in block 4. For the fixed x₃ value and the sliced x₂ value, a term

$\frac{z_{1}\sqrt{N}}{r_{11}} - {\frac{r_{12}}{r_{11}}x_{2}} - {\frac{r_{13}}{r_{11}}x_{3}}$ of block 5 is sliced to determine the x₁ value that minimizes the T₁ term. As illustrated in FIG. 3, block 4 is connected to block 5, such that block 5 can utilize the sliced x₂ value in determining the optimal x₁ value that minimizes the T₁ term. The sliced x₁ value is stored in block 6. In one example, slicing is performed for 16 constellation symbols at a time. Further, in one example, blocks 2-8 of FIG. 3 process 16 constellation points in every clock cycle. One tone may be processed every four clock cycles. The system of FIG. 3 may output soft metrics for one spatial stream every four clock cycles.

In block 7, a distance value equal to T₁+T₂+T₃ is calculated based on the fixed value, the sliced x₂ value, and the sliced x₁ value. The T₁+T₂+T₃ distance value may be calculated according to Equation 1, above, for example. The steps described above are repeated in blocks 1-7 for all possible values of x₃ to generate M distance values. The M distance values may be received at a block 8, where the M distance values are further compared and selected to obtain LLRs for the bits corresponding to x₃.

In a hardware implementation, three identical maximum likelihood modules may be used to compute LLRs corresponding to bits in x₃, x₂, and x₁ (e.g., one maximum likelihood processing module for each spatial stream). The three identical maximum likelihood modules may be configured to operate in parallel, or the maximum likelihood modules may be configured to operate in series. Each of the maximum likelihood modules may include blocks similar to blocks 1-8 of FIG. 3. In other examples, certain of blocks 1-8 may be re-used among the three maximum likelihood modules. For example, in example implementations, block 1 may be re-used among all three maximum likelihood modules.

It is further noted that in certain implementations, blocks 1-8 of FIG. 3 may be modified to be used in a 2×2 MIMO system. Specifically, by removing or disabling blocks 5 and 6, the system of FIG. 3 may be configured to be used in a 2×2 MIMO system with two spatial streams. Removing or disabling blocks 5 and 6 allows the system of FIG. 3 to be backwards compatible with existing hardware and transmission systems. In making the system of FIG. 3 backwards compatible, a search space is (x₂, x₃) instead of (x₁, x₂, x₃), and only blocks 1, 2, 3, 4, 7, and 8 are used. QR decomposition of the channel matrix H is performed to yield a 2×2 R matrix

$\begin{bmatrix} R_{11} & R_{12} \\ 0 & R_{22} \end{bmatrix}.$ Thus, r₁₁ is replaced by R₁₁, r₃₃ is replaced by R₂₂, r₂₃ is replaced by R₁₂, and r₂₂ is replaced by a value of 1 in blocks 1, 2, and 3. In block 7, T₁ is set to 0.

Although computation of LLRs corresponding to bits in x₃ is illustrated in FIG. 3 and described above, similar block diagram configurations may be used to compute LLRs corresponding to bits in x₂ and x₁. For example, as noted above, a QR decomposition is performed to obtain an upper triangular matrix R used in computing the LLR values for x₃. QR decompositions can similarly be performed to obtain upper triangular matrices S and T for computing LLR values for x₂ and x₁, respectively. In block diagrams similar to the block diagram 300 of FIG. 3, the LLR values for x₂ and x₁ are computed by fixing x₂ and x₁ values, respectively, and slicing to minimize the T₁+T₂+T₃ distance.

Specifically, the block diagram 300 of FIG. 3 or similar block diagrams may be used in processing data for a third spatial stream x₃, where the QR decomposition of the channel matrix H is performed using a unitary matrix Q₁ ^(H), and the y vector is transformed according to the relationship z=Q₁ ^(H)y, such that

$\begin{bmatrix} z_{1} \\ z_{2} \\ z_{3} \end{bmatrix} = {{Q_{1}^{H}\begin{bmatrix} y_{1} \\ y_{2} \\ y_{3} \end{bmatrix}} = {{\begin{bmatrix} r_{11} & r_{12} & r_{13} \\ 0 & r_{22} & r_{23} \\ 0 & 0 & r_{33} \end{bmatrix}\begin{bmatrix} x_{1} \\ x_{2} \\ x_{3} \end{bmatrix}} + {n^{\prime}.}}}$ For every possible value of x₃, a term z₂/r₂₂−r₂₃x₃/r₂₂ is sliced to determine an optimal x₂ value. Using the fixed x₃ value and the sliced x₂ value, a term

$\frac{z_{1}}{r_{11}} - \frac{r_{12}x_{2}}{r_{11}} - \frac{r_{13}x_{3}}{r_{11}}$ is sliced to determine an optimal x₁ value. For each bit position j of x₃, a soft metric LLR value is computed as |r₁₁|(D(0)−D(1)), where

${D(k)} = {\min\limits_{{x_{3}:x_{3}^{(j)}} = k}\left\{ {{{\frac{z_{1}}{r_{11}} - x_{1} - \frac{r_{12}x_{2}}{r_{11}} - \frac{r_{13}x_{3}}{r_{11}}}} + {{\frac{z_{2}}{r_{11}} - \frac{r_{22}x_{2}}{r_{11}} - \frac{r_{23}x_{3}}{r_{11}}}} + {{\frac{z_{3}}{r_{11}} - \frac{r_{33}x_{3}}{r_{11}}}}} \right\}}$

In processing data for a second spatial stream x₂, the QR decomposition of a permutated channel matrix H is performed using a unitary matrix Q₂ ^(H), and the y vector is transformed to obtain a w vector according to

$\begin{bmatrix} w_{1} \\ w_{2} \\ w_{3} \end{bmatrix} = {{Q_{2}^{H}\begin{bmatrix} y_{1} \\ y_{2} \\ y_{3} \end{bmatrix}} = {{\begin{bmatrix} s_{11} & s_{12} & s_{13} \\ 0 & s_{22} & s_{23} \\ 0 & 0 & s_{33} \end{bmatrix}\begin{bmatrix} x_{1} \\ x_{3} \\ x_{2} \end{bmatrix}} + {n^{''}.}}}$ In the preceding relationship, s₁₁, s₂₂, and s₃₃ are real values. For every possible value of x₂, a term w₂/s₂₂−s₂₃x₂/s₂₂ is sliced to determine an optimal x₃ value. Using the fixed x₂ value and the sliced x₃ value, a term w₁/s₁₁−s₁₃x₂/s₁₁−s₁₂x₃/s₁₁ is sliced to determine an optimal x₁ value. For each bit position j of x₂, a soft metric LLR value is computed as |s₁₁|(D(0)−D(1)), where

${D(k)} = {\min\limits_{{x_{2}:x_{2}^{(j)}} = k}{\left\{ {{{\frac{w_{1}}{s_{11}} - x_{1} - \frac{s_{12}x_{2}}{s_{11}} - \frac{s_{13}x_{3}}{s_{11}}}} + {{\frac{w_{2}}{s_{11}} - \frac{s_{22}x_{3}}{s_{11}} - \frac{s_{23}x_{3}}{s_{11}}}} + {{\frac{w_{3}}{s_{11}} - \frac{s_{33}x_{2}}{s_{11}}}}} \right\}.}}$

In processing data for a first spatial stream x₁, the QR decomposition of a permutated channel matrix H is performed using a unitary matrix Q₃ ^(H), and the y vector is transformed to obtain a v vector according to

$\begin{bmatrix} v_{1} \\ v_{2} \\ v_{3} \end{bmatrix} = {{Q_{3}^{H}\begin{bmatrix} y_{1} \\ y_{2} \\ y_{3} \end{bmatrix}} = {{\begin{bmatrix} t_{11} & t_{12} & t_{13} \\ 0 & t_{22} & t_{23} \\ 0 & 0 & t_{33} \end{bmatrix}\begin{bmatrix} x_{2} \\ x_{3} \\ x_{1} \end{bmatrix}} + {n^{\prime\prime\prime}.}}}$ In the preceding relationship, t₁₁,t₂₂, and t₃₃ are real values. For every possible value of x₁, a term v₂/t₂₂−t₂₃x₁/t₂₂ is sliced to determine an optimal x₃ value. Using the fixed x₁ value and the sliced x₃ value, a term v₁/t₁₁−t₁₂x₃/t₁₁−t₁₃x₁/t₁₁ is sliced to determine an optimal x₂ value. For each bit position j of x₁, a soft metric LLR value is computed as |t₁₁|(D(0)−D(1)), where

${D(k)} = {\min\limits_{{x_{1}:x_{1}^{(j)}} = k}{\left\{ {{{\frac{v_{1}}{t_{11}} - \frac{t_{13}x_{1}}{t_{11}} - \frac{t_{12}x_{3}}{t_{11}} - x_{2}}} + {{\frac{v_{2}}{t_{11}} - \frac{t_{23}x_{1}}{t_{11}} - \frac{t_{22}x_{3}}{t_{11}}}} + {{\frac{v_{3}}{t_{11}} - \frac{t_{33}x_{1}}{t_{11}}}}} \right\}.}}$ The above-described QR decompositions and matrix transformations to obtain LLR values for x₁, x₂, and x₃ may be performed in parallel or in series.

FIG. 4 is a flowchart illustrating an example method for detecting data in a received multiple-input-multiple-output (MIMO) signal using the low complexity algorithm disclosed above with reference to FIGS. 1-3. At 402, first, second, and third signals, namely y1, y2 and y3, are received that are associated with the first, second, and third data values, namely x1, x2 and x3. The received signals y1, y2, and y3 are formed into a vector y. The data values x1, x2, and x3 are formed into a vector x. For example, the vector y may be ([y1, y2, y3]^(T)), and the vector x may be ([x1, x2, x3]^(T)). At 404, a channel matrix representing effects of a transmission channel is received. For example, the channel matrix H may be a 3×3 vector,

$\begin{bmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \end{bmatrix},$ where the channel matrix H represents combined effects of the transmission channel and spatial mapping of a MIMO transmitter on the transmitted signal. At 406, an expanded matrix is formed by appending the received signal vector to the channel matrix and performing a QR decomposition, hence obtaining an upper triangle channel matrix and a rotated received signal vector containing z1, z2, and z3, namely vector z. The upper triangle channel matrix may be

$\begin{bmatrix} r_{11} & r_{12} & r_{13} \\ 0 & r_{22} & r_{23} \\ 0 & 0 & r_{33} \end{bmatrix},$ and the rotated received signal vector may be ([z1, z2, z3]^(T)).

At 408, a distance value between vector z and vector x is determined for each possible third data value x3. Specifically, at 408A, a third data value x3 from all possible values is selected. Based on the selected x3, a nearest constellation point which minimizes partial distance between the pair of z2, z3 and x2, x3 is selected. At 408B, based on x2 and x3, the nearest constellation point which minimizes the distance between vector z and vector x is calculated. As described above, with reference to FIGS. 2 and 3, steps 408A and 408B are implemented using a term-by-term process. The term-by-term process is an algorithm that attempts to minimize the distance between vector z and vector x with low computational complexity. At 408C, the calculating steps 408A and 408B are repeated for each of the possible third data values x3 to generate a set of constellation point triplets, where each constellation point triplet is associated with a possible third data value. At 408D, distance values based on the set of constellation point triplets are determined. Each distance value is associated with a particular constellation point triplet within the set.

At 410, LLR values are determined for each of the bits in x3 by searching within the determined distance values. At 411, the columns of H are permuted using a permutation matrix, and the steps 406 to 410 are repeated to obtain LLR values for each of the bits in x2. At 412, the columns of H are permuted using a permutation matrix, and the steps 406 to 410 are repeated to obtain LLR values for each of the bits in x1. The calculated LLR values are combined by an LLR combiner and provided to a decoder. The decoder may be, for example, a low-density parity-check (LDPC) decoder or a convolutional decoder. The decoder decodes the received spatial streams using the LLR values provided by the combiner and generates informational bits as output data.

FIG. 5 depicts an example device 480 illustrating an implementation of the present disclosure. The device 480 can be any device capable of wireless communication—e.g., a cellular phone, set top box, smart phone, computer system, and the like. The present invention may implement signal processing or control circuits 484, a WLAN interface 496, or mass data storage 490 of the device 480. Signal processing or control circuits 484 or other circuits (not shown) of the device 480 may process data, perform coding or encryption, perform calculations, format data, or perform any other function as required by an application for the device 480.

The device 480 may communicate with mass data storage 490 that stores data in a nonvolatile manner. Mass data storage 490 may include optical or magnetic storage devices, for example hard disk drives HDD or DVD drives. The device 480 may be connected to memory 494 such as RAM, ROM, low latency nonvolatile memory such as flash memory, or other suitable electronic data storage. The device 480 may also support connections with a WLAN via the WLAN network interface 496.

This written description uses examples to disclose the invention, including the best mode, and also to enable a person skilled in the art to make and use the invention. It should be noted that the systems and methods described herein may be equally applicable to other frequency modulation encoding schemes. The patentable scope of the invention may include other examples.

It should be understood that as used in the description herein and throughout the claims that follow, the meaning of “a,” “an,” and “the” includes plural reference unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise. Further, as used in the description herein and throughout the claims that follow, the meaning of “each” does not require “each and every” unless the context clearly dictates otherwise. Finally, as used in the description herein and throughout the claims that follow, the meanings of “and” and “or” include both the conjunctive and disjunctive and may be used interchangeably unless the context expressly dictates otherwise; the phrase “exclusive of” may be used to indicate situations where only the disjunctive meaning may apply. 

It is claimed:
 1. A method of detecting data in a received multiple-input-multiple-output (MIMO) signal, the method comprising: receiving, via a transmission channel, a first signal (y1), a second signal (y2), and a third signal (y3) on first, second, and third spatial streams, respectively, wherein the received signals are associated with first data values (x1), second data values (x2), and third data values (x3); forming the first signal, the second signal, and the third signal into a received signal vector y; forming the first data values, the second data values, and the third data values into a vector x; receiving a channel matrix (H) representing effects of the transmission channel on the first data values, the second data values, and the third data values; performing a QR decomposition of the channel matrix, such that H=QR, wherein Q matrix is a unitary matrix and R matrix is an upper triangular matrix; transforming the received signal vector y into a rotated received signal vector z according to z=Q^(H)y; determining a distance value between the vector z and the vector x for each possible third data value (x3), the determining including: calculating a nearest constellation point based on a first of the possible third data values (x3), wherein the nearest constellation point minimizes a distance between vector z and vector x, repeating the calculating step for each of the possible third data values (x3) to generate a set of constellation point triplets, wherein one constellation point triplet is associated with each of the possible third data values (x3), and determining a distance value between the vector z and the vector x using the set of constellation point triplets, and further using elements of the channel matrix, wherein one distance value is associated with each of the constellation point triplets of the set; and determining one or more log likelihood ratio (LLR) values based on the determined distance values.
 2. The method of claim 1, further comprising: permutating columns of the channel matrix by multiplying the channel matrix by a permutation matrix; determining a second distance value between the vector z and the vector x for each possible second data value (x2), the determining including: calculating a nearest constellation point based on a first of the possible second data values (x2), wherein the nearest constellation point minimizes a distance between vector z and vector x, repeating the calculating step for each of the possible second data values (x2) to generate a second set of constellation point triplets, wherein one constellation point triplet is associated with each of the possible second data values (x2), and determining a second distance value between the vector z and the vector x using the second set of constellation point triplets, and further using elements of the permutated channel matrix, wherein one second distance value is associated with each of the constellation point triplets of the second set; and determining one or more second LLR values based on the determined second distance values.
 3. The method of claim 2, further comprising: permutating the columns of the channel matrix by multiplying the channel matrix by the permutation matrix, wherein the permutation matrix is $P = \begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \end{bmatrix}$ or $P = {\begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \end{bmatrix}.}$
 4. The method of claim 2, further comprising: permutating the columns of the channel matrix by multiplying the channel matrix by a second permutation matrix; determining a third distance value between the vector z and the vector x for each possible first data value (x1), the determining including: calculating a nearest constellation point based on a first of the possible first data values (x1), wherein the nearest constellation point minimizes a distance between vector z and vector x, repeating the calculating step for each of the possible first data values (x1) to generate a third set of constellation point triplets, wherein one constellation point triplet is associated with each of the possible first data values (x1), and determining a third distance value between the vector z and the vector x using the third set of constellation point triplets, and further using elements of the permutated channel matrix, wherein one third distance value is associated with each of the constellation point triplets of the third set; and determining one or more third LLR values based on the determined third distance values.
 5. The method of claim 4, further comprising: decoding the one or more first data values, the one or more second data values, and the one or more third data values based on the first, second, and third LLR values.
 6. The method of claim 1, further comprising: determining the one or more LLR values, wherein the one or more LLR values are determined without an exhaustive search of all possible first signal values and all possible second signal values.
 7. The method of claim 1, further comprising: determining a first distance value and a second distance value for each possible third data value (x3), the determining including: calculating a first nearest constellation point and a second nearest constellation point based on the first of the possible third data values (x3), repeating the calculating step for each of the possible third data values to generate the set of constellation point triplets, wherein two constellation point triplets are associated with each of the possible third data values (x3), and determining a first distance value and a second distance value between the vector z and the vector x using the set of constellation point triplets, wherein two distance values are associated with each of the possible third data values (x3).
 8. The method of claim 1, further comprising: determining four distance values for each possible third data value (x3), the determining including: calculating four nearest constellation points based on the first of the possible third data values (x3), repeating the calculating step for each of the possible third data values to generate the set of constellation point triplets, wherein four constellation point triplets are associated with each of the possible third data values (x3), and determining four distance values between the vector z and the vector x using the plurality of constellation point triplets, wherein four distance values are associated with each of the possible third data values (x3).
 9. The method of claim 1, further comprising: calculating the nearest constellation point based on the first of the possible third data values, wherein the calculating utilizes a slicing procedure.
 10. A method of detecting data in a received multiple-input-multiple-output (MIMO) signal, the method comprising: receiving, via a transmission channel, a first signal (y₁), a second signal (y₂), and a third signal (y₃) on first, second, and third spatial streams, respectively, wherein the received signals are associated with first data values (x₁), second data values (x₂), and third data values (x₃), wherein the first, second, and third signals form a y-vector ([y₁, y₂, y₃]^(T)), and wherein the first, second, and third data values form an x-vector ([x₁, x₂, x₃]^(T)); receiving a channel matrix (H) representing effects of the transmission channel on the one or more first data values, the one or more second data values, and the one or more third data values; performing a QR decomposition of the channel matrix, such that H=QR, wherein Q matrix is a unitary matrix and R matrix is $\begin{bmatrix} r_{11} & r_{12} & r_{13} \\ 0 & r_{22} & r_{23} \\ 0 & 0 & r_{33} \end{bmatrix};$ transforming the y-vector to a z-vector ([z₁, z₂, z₃]^(T)) according to z=Q^(H)y; determining a distance value between the z-vector and the x-vector for each possible third data value (x₃), the determining including: calculating a particular second data value (x₂) that minimizes a term |z₂−r₂₂x₂−r₂₃x₃|² for a first of the possible third data values (x₃), calculating a particular first data value x₁) that minimizes a term |z₁−r₁₁x₁−r₁₂x₂−r₁₃x₃|² for the first of the possible third data values (x₃) and the particular second data value (x2), calculating a distance value between the z-vector and the x-vector for the first of the possible third data values (x₃) using the particular second data value (x₂) and the particular first data value (x₁), and repeating the calculating steps for each of the possible third data values (x₃) so that one distance value is associated with each possible third data value (x₃); determining one or more log likelihood ratio (LLR) values based on the determined distance values; and decoding the third data value (x₃) based on the one or more LLR values.
 11. The method of claim 10, further comprising: repeating the steps of performing, transforming, and determining the distance value, wherein the repeated steps utilize a modified channel matrix that is equal to the received channel matrix (H) multiplied by a first permutation matrix that is $P = \begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \end{bmatrix}$ or ${P = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \end{bmatrix}},$ wherein the repeated steps utilize a symbolic interchange between the third data value (x₃) and the second data value (x₂), and wherein the repeated steps generate distance values for each possible second data value (x₂); and decoding the second data value (x₂) based on the generated distance values for each possible second data value.
 12. The method of claim 11, further comprising: repeating the steps of performing, transforming, and determining the distance value, wherein the repeated steps utilize a modified charnel matrix that is equal to the received channel matrix (H) multiplied by a first permutation matrix that is $P = \begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \end{bmatrix}$ or $P = {\begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \end{bmatrix}.}$ wherein the repeated steps utilize a symbolic interchange between the third data value (x₃) and the first data value (x₁), and wherein the repeated steps generate distance values for each possible first data value (x₁); and decoding the first data value (x₁) based on the generated distance values for each possible first data value.
 13. The method of claim 10, further comprising: calculating the distance value for the first of the possible third data values (x₃) using the particular second data value (x₂) and the particular first data value (x₁), wherein the distance value is calculated according to ∥z−Rx∥²=|z₁−r₁₁x₁−r₁₂x₂−r₁₃x₃|²+|z₂−r₂₂x₂−r₂₃x₃|²+|z₃−r₃₃x₃|².
 14. The method of claim 10, further comprising: calculating the distance value using a norm approximation.
 15. The method of claim 10, further comprising: determining a first distance value and a second distance value for each possible third data value (x₃), the determining including: determining two nearest second data values (x₂) that minimize the term |z₂−r₂₂x₂−r₂₃x₃|² for the first of the possible third data values (x₃), and determining two nearest first data values (x₁) based on the two nearest second data values (x₂).
 16. The method of claim 10, further comprising: determining four distance values for each possible third data value (x₃), the determining including: determining four nearest second data values (x₂) that minimize the |z₂−r₂₂x₂−r₂₃x₃|² for the first of the possible third data values (x₃), and determining four nearest first data values (x₁) based on the four nearest second data values (x₂).
 17. The method of claim 10, further comprising: for the first possible third data value (x₃), performing a first slicing procedure to determine a first nearest second data value (x₂); using the first nearest second data value (x₂), performing a second slicing procedure to determine a first nearest first data value (x₁); for the first possible third data value (x₃), performing a third slicing procedure to determine a second nearest first data value (x₁); and using the second nearest first data value (x₁), performing a fourth slicing procedure to determine a second nearest second data value (x₂).
 18. The method of claim 10, further comprising: determining the one or more LLR values, wherein the one or more LLR values are determined without an exhaustive search of all possible first signal values and all possible second signal values.
 19. A system for detecting data in a received multiple-input-multiple-output (MIMO) signal, the system comprising: one or more antennas configured to receive, via a transmission channel, a first signal (y1), a second signal (y2), and a third signal (y3) on first, second, and third spatial streams, respectively, wherein the received signals are associated with first data values (x1), second data values (x2), and third data values (x3), wherein the first signal, the second signal, and the third signal form a received signal vector y, and wherein the first data values, the second data values, and the third data values form a vector x; a QR decomposer configured to transform a channel matrix (H) representing effects of the transmission channel on the first data values, the second data values, and the third data values, wherein the channel matrix is transformed via a QR decomposition, such that H=QR, wherein Q matrix is a unitary matrix and R matrix is an upper triangular matrix; a matrix transformer configured to transform the received signal vector y into a rotated received signal vector z according to z=Q^(H)y; and a distance value determiner configured to determine a distance value between the vector z and the vector x for each possible third data value (x3), the distance value determiner being configured to: calculate a nearest constellation point based on a first of the possible third data values (x3), wherein the nearest constellation point minimizes a distance between vector z and vector x, repeat the calculating step for each of the possible third data values (x3) to generate a set of constellation point triplets, wherein one constellation point triplet is associated with each of the possible third data values (x3), and determine a distance value between the vector z and the vector x using the set of constellation point triplets, and further using elements of the channel matrix, wherein one distance value is associated with each of the constellation point triplets of the set.
 20. The system of claim 19, further comprising: a memory programmed to store the channel matrix (H), wherein the distance value determiner utilizes elements of the channel matrix in calculating the distance value. 